home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / BUSINESS / STATA3.LZH / REGRESS.TUT < prev    next >
Text File  |  1988-08-30  |  15KB  |  423 lines

  1. set output error
  2. set display page 23
  3. set more 1
  4. #delimit ;
  5.  
  6. di _n(5) in wh
  7. "  ___  ____  ____  ____  ____ tm" _n
  8. " /__    /   ____/   /   ____/" _n
  9. "___/   /   /___/   /   /___/    Estimating Regression Models" _n
  10. "------------------------------------------------------------" _n(2) ;
  11.  
  12. di in gr
  13. "This tutorial provides an overview of the Stata commands for estimating" _n
  14. "multiple-regression models, including two-stage least squares.  The com-" _n
  15. "mands we discuss are:" _n(2)
  16. _col(12) in wh "regress      test      predict    stepwise" _n(2)
  17. in gr
  18. "We begin by using some Census data we have stored in the file census.dta." _n
  19. "Right now, this tutorial is secretly using the data, dropping some of the" _n
  20. "variables, and generating a few new ones." _n(2)
  21. "We will show you the result on the next screen:" _n(6) ;
  22.  
  23.  
  24. #delimit cr
  25. mac def path
  26. capture run nullfile.tut
  27. if _rc {
  28.     mac def path "\stata\"
  29.     capture run %path`nullfile.tut
  30.     if _rc {
  31.         mac def path "/usr/stata/"
  32.         capture run %path`nullfile.tut
  33.         if _rc {
  34.             #delimit ;
  35.             di in red
  36. "I cannot find the other tutorial files.  I have looked in the current" _n
  37. "directory and in \stata (DOS) or /usr/stata (Unix).  Is Stata installed" _n
  38. "correctly?" _n(2)
  39. "In any case, I cannot run the tutorial." ;
  40.             #delimit cr
  41.             exit
  42.         }
  43.     }
  44. }
  45. macro define F5 "do %path`contents.tut;"
  46. macro define F6 "do %path`regress.tut;"
  47.  
  48.  
  49. use %path`census, clear
  50. keep state medage death pop popurban
  51. gen pcturban = 100* popurban/pop
  52. gen drate = death/pop
  53. drop death popurban
  54. gen medagesq=medage^2
  55. label variable medagesq "Median age squared"
  56. label variable drate "Death Rate"
  57. label variable pcturban "Percent urban population"
  58.  
  59. #delimit ;
  60. set more 0 ; more ; set more 1 ;
  61.  
  62. di _n(2) in wh ". describe" ;
  63. noisily describe ;
  64. di _n in wh ". summarize" ;
  65. noisily summarize ;
  66. set more 0 ; more ; set more 1 ;
  67.  
  68.  
  69. di _n(8) in wh _dup(79) "-" _n in gr
  70. "The " in wh "regress"
  71. in gr " command estimates linear regressions.  Its syntax is" _n(2)
  72. in wh _col(16) "regress " in gr " lhsvar  rhsvar1 rhsvar2 ..." _n(2) in gr
  73. "where lhsvar is the dependent variable and rhsvar1, rhsvar2, etc., are the" _n
  74. "exogenous or control variables.  The right-hand-side variables may include" _n
  75. "polynomial terms for estimating quadratic or higher order equations, logs," _n
  76. "or other functions.  Stata's '"
  77. in wh "generate" in gr "' command performs these (and many other)" _n
  78. "transformations." _n ;
  79.  
  80. di in gr
  81. "On PCs under DOS, up to 38 right-hand-side variables may be specified in a" _n
  82. "regression; under Unix, you may include up to 255, although to specify more" _n
  83. "than 38 you'll have to learn about the '"
  84. in wh "set matsize" in gr "' command.  You might type" _n
  85. "'" in wh "help matsize" in gr "' at the conclusion of this tutorial." _n
  86. in wh _dup(79) "-" _n(8) ;
  87. set more 0 ; more ; set more 1 ;
  88.  
  89. di in wh _dup(79) "-" _n in gr
  90. "We wish to estimate the equation" _n(2)
  91. "       drate = b  + b medage + b medagesq + b pcturban" _n
  92. "                0    1          2            3" _n(2)
  93. "where drate is the state's death rate, medage is the median age of the pop-" _n
  94. "ulation of the state, medagesq is the median age squared, and pcturban is" _n
  95. "the percentage of the population living in urban areas." _n
  96. in wh _dup(79) "-" _n(13)
  97. ". regress drate medage medagesq pcturban" ;
  98. set more 0 ; more ; set more 1 ;
  99. noisily regress drate medage medagesq pcturban ;
  100. di ; set more 0 ; more ; set more 1 ;
  101.  
  102. di _n(16) in wh _dup(79) "-" _n in gr
  103. "We find the t-statistic on medage is 0.402 and on medagesq is 0.115 -- Wait!"
  104. _n
  105. "You don't remember that?  Type "
  106. in wh "regress" in gr " without arguments to see the results"
  107. _n
  108. "again." _n
  109. in wh _dup(79) "-" _n(2)
  110. ". regress" ;
  111. set more 0 ; more ; set more 1 ;
  112. noisily regress ;
  113. set more 0 ; more ; set more 1 ;
  114.  
  115.  
  116. di _n(2) in wh _dup(79) "-" _n in gr
  117. "In our model, the t-statistic on medage is 0.402 and on medagesq is 0.115," _n
  118. "so neither is individually significant.  We might wonder if the two variables"
  119. _n
  120. "are jointly significant." _n(2)
  121. "The "
  122. in wh "test"
  123. in gr " command allows you to test hypotheses about your model.  The simplest"
  124. _n
  125. "form of "
  126. in wh "test"
  127. in gr " is the joint test that one or more variables have coefficients" _n
  128. "equal to zero.  The syntax is:" _n ;
  129. di _col(16) in wh "test" in gr " varname [varname ...]" _n(2)
  130. in wh _dup(79) "-" _n(4)
  131. ". test medage medagesq" ;
  132. noisily test medage medagesq ;
  133. set more 0 ; more ; set more 1 ;
  134.  
  135. di _n(2) in wh _dup(79) "-" _n
  136. "test" in gr
  137. " can test any linear hypothesis about the coefficients.  The syntax for" _n
  138. "these kinds of tests is:" _n(2)
  139. _col(16) in wh "test" in gr " expression " in wh "=" in gr " expression" _n(2)
  140. "For instance, we can test whether the coefficient on medage is equal to twice"
  141. _n
  142. "the coefficient on medagesq by typing:" _n
  143. in wh _dup(79) "-" _n(8)
  144. ". test medage=2*medagesq" ;
  145. noisily test medage=2*medagesq ;
  146. set more 0 ; more ; set more 1 ;
  147.  
  148. di _n(2) in wh _dup(79) "-" _n
  149. "test" in gr
  150. " has the ability to perform algebra, so you can state hypotheses any way" _n
  151. "you desire.  We just tested whether the coefficient on medage is twice the" _n
  152. "coefficient on medagesq by typing '"
  153. in wh "test medage=2*medagesq" in gr "'." _n(2)
  154. "Here's another way of achieving the same result:" _n
  155. in wh _dup(79) "-" _n(10)
  156. ". test 2*(medage-medagesq)-(medage-medagesq)/2=(medage-medagesq)/2+medagesq";
  157. noisily
  158. test 2*(medage-medagesq)-(medage-medagesq)/2=(medage-medagesq)/2+medagesq ;
  159. set more 0 ; more ; set more 1 ;
  160.  
  161. di _n(2) in wh _dup(79) "-" _n
  162. "test" in gr
  163. " can be used to test multiple hypotheses as well as a single hypothesis." _n
  164. "You do this by specifying the '"
  165. in wh "accumulate" in gr "' option.  We just tested whether" _n
  166. "the coefficient on medage is twice the coefficient on medagesq.  Let's now" _n
  167. "add an additional constraint and test whether the coefficient on pcturban is"
  168. _n
  169. "also equal to the coefficient on medage:" _n
  170. in wh _dup(79) "-" _n(10)
  171. ". test pcturban=medage, accumulate" ;
  172. noisily test pcturban=medage, accumulate ;
  173. set more 0 ; more ; set more 1 ;
  174.  
  175. di _n(2) in wh _dup(79) "-" _n in gr
  176. "Even after all this time, Stata will redisplay the last estimated model when"
  177. _n
  178. "we type the estimation command without arguments:" _n
  179. in wh _dup(79) "-" _n(2)
  180. ". regress" ;
  181. noisily regress ;
  182. set more 0 ; more ; set more 1 ;
  183.  
  184. di _n(4) in wh _dup(79) "-" _n in gr
  185. "After estimating a model, you can obtain the covariance matrix of the esti-" _n
  186. "mators, presented as a correlation matrix, by typing '"
  187. in wh "correlate, _coef" in gr "':"  _n
  188. in wh _dup(79) "-" _n(11)
  189. ". correlate, _coef" _n ;
  190. noisily correlate, _coef ;
  191. set more 0 ; more ; set more 1 ;
  192.  
  193. di _n(4) in wh _dup(79) "-" _n in gr
  194. "You can obtain the covariance matrix of the estimators by typing '"
  195. in wh "correlate," _n
  196. "_coef covariance"
  197. in gr "'.  As with all Stata commands, you can abbreviate:" _n
  198. in wh _dup(79) "-" _n(11)
  199. ". cor, _c cov" _n ;
  200. noisily corr, _c cov ;
  201. set more 0 ; more ; set more 1 ;
  202.  
  203. di _n(2) in wh _dup(79) "-" _n in gr
  204. "Stata can calculate an abundance of statistics from the regression, including:"
  205. _n(2)
  206. _col(16) "predicted values" _n
  207. _col(16) "residuals" _n
  208. _col(16) "standardized residuals" _n
  209. _col(16) "Studentized residuals" _n
  210. _col(16) "standard error of the predictions" _n
  211. _col(16) "standard error of the residuals" _n
  212. _col(16) "Influence statistics:" _n
  213. _col(24) "Cook's distance" _n
  214. _col(24) "diagonal elements of the projection matrix" _n
  215. _col(24) "DF-Betas" _n(2)
  216. "All of this is done by a single command:  "
  217. in wh "predict" in gr ".  Its syntax is:" _n(2)
  218. _col(16) in wh "predict"
  219. in gr " new-variable-name [" in wh "," in gr
  220. " name-of-statistic]" _n ;
  221.  
  222. di in gr
  223. "If we do not specify the name of a statistic, "
  224. in wh "predict" in gr " calculates predicted" _n
  225. "values." _n
  226. in wh _dup(79) "-" _n(3)
  227. ". predict dhat" ;
  228. predict dhat ;
  229. set more 0 ; more ; set more 1 ;
  230.  
  231. di in wh _n ". summarize drate dhat" ;
  232. noisily summarize drate dhat ;
  233.  
  234. di _n(2) in wh _dup(79) "-" _n in gr
  235. "Since we did not specify what statistic we wanted "
  236. in wh "predict" in gr " to calculate, we" _n
  237. "obtained the predicted values.  We used "
  238. in wh "predict" in gr " to generate predictions for" _n
  239. "the same data on which we estimated the model, and we see that the mean of" _n
  240. "the predictions is equal to the mean of the predicted variable." _n(2)
  241. in wh "predict" in gr
  242. " can also make out-of-sample predictions, even on different data sets."
  243. _n(2)
  244. "As one more example, let's calculate the values of Cook's Distance, an influ-" _n
  245. "ence measure:" _n
  246. in wh _dup(79) "-" _n(2)
  247. ". predict influ, cooksd" ;
  248. predict influ, cooksd ;
  249. set more 0 ; more ; set more 1 ;
  250.  
  251. di _n in wh ". summarize influ, detail" ;
  252. noisily summarize influ, detail ;
  253.  
  254. di _n in wh _dup(79) "-" _n in gr
  255. "Note that one observation is extremely influential.  Let's find it." _n
  256. in wh _dup(79) "-" ;
  257. set more 0 ; more ; set more 1 ;
  258.  
  259. di _n(2) in wh ". list state if influ>1" ;
  260. noisily list state if influ>1 ;
  261.  
  262. di _n in wh _dup(79) "-" _n(2) in gr
  263. "Stata's estimation commands work the same way that all of Stata's commands" _n
  264. "work, so you have the full power of Stata's syntax at your disposal." _n(2)
  265. "We just discovered that Utah was a heavily influential state in our regres-" _n
  266. "sion.  It is the only state that has a value of Cook's Distance in excess" _n
  267. "of 1.  We can now reestimate our equation excluding this observation without"
  268. _n
  269. "creating a new data set.  We type:" _n
  270. in wh _dup(79) "-" _n(9)
  271. ". regress drate medage medagesq pcturban if influ<1" ;
  272. set more 0 ; more ; set more 1 ;
  273. noisily regress drate medage medagesq pcturban if influ<1 ;
  274. di _n ; set more 0 ; more ; set more 1 ;
  275. drop dhat influ ;
  276.  
  277. di _n(2) in wh _dup(79) "-" _n in gr
  278. "In addition to estimating linear regressions, Stata can estimate weighted" _n
  279. "regressions as well.  You do not have to be concerned with the normalization"
  280. _n
  281. "of the weight or any of the other details unless, of course, you want to." _n
  282. "Stata has ways of letting you take control." _n(2)
  283. "We have in our data the variable 'pop' which records the population of each"
  284. _n
  285. "state:" _n
  286. in wh _dup(79) "-" _n(2)
  287. ". summarize pop" ;
  288. noisily summarize pop ;
  289.  
  290. di _n(3) in wh _dup(79) "-" _n in gr
  291. "We can reestimate our model using weighted regression by typing:" _n
  292. in wh _dup(79) "-" _n(2)
  293. ". regress drate medage medagesq pcturban =pop" ;
  294. set more 0 ; more ; set more 1 ;
  295. noisily regress drate medage medagesq pcturban =pop ;
  296. set more 0 ; more ; set more 1 ;
  297.  
  298. di _n(2) in wh _dup(79) "-" _n in gr
  299. "In terms of how you interact with Stata, weighted regressions are no different"
  300. _n
  301. "than ordinary regressions.  You could now perform hypotheses tests, examine" _n
  302. "the covariance matrix, or calculate predicted values using the same commands"
  303. _n
  304. "we've already illustrated." _n
  305. in wh _dup(79) "-" _n(1) ;
  306.  
  307.  
  308. di _n(7) in wh _dup(79) "-" _n in gr
  309. "The "
  310. in wh "stepwise"
  311. in gr " command performs stepwise linear regression; its syntax is the" _n
  312. "same as that for "
  313. in wh "regress" in gr ", and it has all the same capabilities.  After esti-"
  314. _n
  315. "mating a model with "
  316. in wh "stepwise" in gr ", you can use "
  317. in wh "correlate" in gr ", " in wh "test" in gr ", and "
  318. in wh "predict" in gr ", just" _n
  319. "as you would after " in wh "regress" in gr "." _n
  320. in wh _dup(79) "-" _n(3)
  321. ". stepwise drate medage medagesq pcturban" ;
  322. set more 0 ; more ; set more 1 ;
  323. di ; noisily stepwise drate medage medagesq pcturban ;
  324. di _n ; set more 0 ; more ; set more 1 ;
  325.  
  326. di _n(2) in wh _dup(79) "-" _n in gr
  327. "By default, "
  328. in wh "stepwise"
  329. in gr " performs backward variable elimination, although it" _n
  330. "can also perform forward or forward and backward (stepwise) elimination." _n
  331. "The default F-statistic for variable entry is 0.5 and the default for" _n
  332. "keeping a variable is 0.1.  All of this is controllable through options:" _n ;
  333.  
  334. di
  335. _col(9) in wh "backward"
  336. _col(25) in gr "performs backward elimination and is the default" _n
  337. _col(9) in wh "forward"
  338. _col(25) in gr "performs forward selection" _n
  339. _col(9) in wh "stepwise"
  340. _col(25) in gr "performs forward selection and backward elimination" _n(2)
  341. _col(9) in wh "fenter(" in gr "#" in wh ")"
  342. _col(25) in gr "specifies F-value required for variable entry" _n
  343. _col(9) in wh "fstay(" in gr "#" in wh ")"
  344. _col(25) in gr "specifies F-value required to keep a variable" _n(2)
  345. "You can learn more about the "
  346. in wh "stepwise" in gr " command by typing '"
  347. in wh "help stepwise" in gr "'" _n
  348. "at the conclusion of this tutorial." _n
  349. in wh _dup(79) "-" _n(8) ;
  350. set more 0 ; more ; set more 1 ;
  351.  
  352.  
  353. di _n(6) in wh _dup(79) "-" _n in gr
  354. "As our last example, we will show you Stata's ability to perform instrumental"
  355. _n
  356. "variable estimation or two-stage least squares.  We're going to use a "
  357. "different" _n
  358. "data set; on the next screen we'll show it to you:" _n
  359. in wh _dup(79) "-" _n(2)
  360. ". use %path`hsng, clear" ;
  361. noisily use %path`hsng, clear ;
  362. di _n in wh ". keep hsngval faminc rent pcturban region" ;
  363. keep hsngval faminc rent pcturban region ;
  364. tabulate region, gen(reg) nofreq ;
  365. set more 0 ; more ; set more 1 ;
  366.  
  367. di _n(2) in wh _dup(79) "-" _n in gr
  368. "The data records the median housing values and rents across the states based"
  369. _n
  370. "on the 1980 Census." _n
  371. in wh _dup(79) "-" _n(4)
  372. ". describe" ;
  373. noisily describe ;
  374. di ; set more 0 ; more ; set more 1 ;
  375.  
  376. di _n(2) in wh _dup(79) "-" _n in gr
  377. "We want to estimate the following model:" _n(2)
  378. "          hsngval = a  + a faminc + a reg2 + a reg3 + a reg4" _n
  379. "                     0    1          2        3        4" _n(2)
  380. "             rent = b  + b hsngval + b pcturban" _n
  381. "                     0    1           2" _n ;
  382.  
  383. di in gr
  384. "The "
  385. in wh "regress"
  386. in gr " syntax for instrumental variable and two-stage least squares is:" _n(2)
  387. _col(8) in wh "regress" in gr
  388. " lhsvar rhsvar1 rhsvar2 ... " in wh "(" in gr
  389. "exogvar1 exogvar2 ... " in wh ")" in gr _n(2)
  390. "So, to estimate the rent equation, we type:" _n
  391. in wh _dup(79) "-" _n(9)
  392. ". regress rent hsngval pcturban (faminc reg2-reg4 pcturban)" ;
  393. set more 0 ; more ; set more 1 ;
  394. noisily regress rent hsngval pcturban (faminc reg2-reg4 pcturban) ;
  395.  
  396. di _n(2) in wh _dup(79) "-" _n in gr
  397. "We could now use any of the Stata commands to perform hypothesis testing or"
  398. _n
  399. "we could calculate predicted values." _n
  400. in wh _dup(79) "-"  ;
  401. drop _all ;
  402. label drop _all ;
  403. macro define F6 "do %path`anova.tut;" ;
  404. set more 0 ; more ; set more 1 ;
  405.  
  406. di _n(4) in white
  407. "Demonstration ends" _n
  408. "------------------" _n ;
  409.  
  410.  
  411. di in green
  412. "That concludes our short demonstration, but there's much more.  We now return"
  413. _n
  414. "control to you.  Some suggestions:" _n ;
  415.  
  416. di in green
  417. "If you ..." _col(34) "Then we will show you ..." _n
  418. "    Press " in white "F5" in green _col(38) "a table of tutorial contents" _n
  419. "    Press " in white "F6" in green _col(38) "the next tutorial, "
  420. in white "anova.tut" _n ;
  421.  
  422. run %path`tobuy.tut ;
  423.